
#include "square.h"

using namespace espreso;

bool Square::gpw(int order, std::vector<double> &r, std::vector<double> &s, std::vector<double> &w)
{
	switch (order) {
	case 0:
	case 1:
		r.resize(1); s.resize(1); w.resize(1);
		r[ 0] =  0.0                                 ;   s[ 0] =  0.0                                 ;   w[ 0] =  4.0                                 ;
		break;

	case 2:
		r.resize(3); s.resize(3); w.resize(3);
		r[ 0] = -0.40824829046386301636621401245098  ;   s[ 0] = -0.70710678118654752440084436210485  ;   w[ 0] =  1.3333333333333333333333333333333   ;
		r[ 1] = -0.40824829046386301636621401245098  ;   s[ 1] =  0.70710678118654752440084436210485  ;   w[ 1] =  1.3333333333333333333333333333333   ;
		r[ 2] =  0.81649658092772603273242802490196  ;   s[ 2] =  0.0                                 ;   w[ 2] =  1.3333333333333333333333333333333   ;
		break;

//	case 3:
//		r.resize(4); s.resize(4); w.resize(4);
//		r[ 0] = -0.57735026918962576450914878050196  ;   s[ 0] = -0.57735026918962576450914878050196  ;   w[ 0] =  1.0                                 ;
//		r[ 1] =  0.57735026918962576450914878050196  ;   s[ 1] = -0.57735026918962576450914878050196  ;   w[ 1] =  1.0                                 ;
//		r[ 2] =  0.57735026918962576450914878050196  ;   s[ 2] =  0.57735026918962576450914878050196  ;   w[ 2] =  1.0                                 ;
//		r[ 3] = -0.57735026918962576450914878050196  ;   s[ 3] =  0.57735026918962576450914878050196  ;   w[ 3] =  1.0                                 ;
//		break;

	case 3:
		r.resize(5); s.resize(5); w.resize(5);
		r[ 0] = -0.77459666924148337703585307995648  ;   s[ 0] = -0.77459666924148337703585307995648  ;   w[ 0] =  0.55555555555555555555555555555556  ;
		r[ 1] =  0.77459666924148337703585307995648  ;   s[ 1] = -0.77459666924148337703585307995648  ;   w[ 1] =  0.55555555555555555555555555555556  ;
		r[ 2] =  0.77459666924148337703585307995648  ;   s[ 2] =  0.77459666924148337703585307995648  ;   w[ 2] =  0.55555555555555555555555555555556  ;
		r[ 3] = -0.77459666924148337703585307995648  ;   s[ 3] =  0.77459666924148337703585307995648  ;   w[ 3] =  0.55555555555555555555555555555556  ;
		r[ 4] =  0.0                                 ;   s[ 4] =  0.0                                 ;   w[ 4] =  1.7777777777777777777777777777778   ;
		break;

	case 4:
		r.resize(6); s.resize(6); w.resize(6);
		r[ 0] =  0.0                                 ;   s[ 0] =  0.0                                 ;   w[ 0] =  1.1428571428571428571428571428571   ;
		r[ 1] =  0.96609178307929590491457761047798  ;   s[ 1] =  0.0                                 ;   w[ 1] =  0.43956043956043956043956043956044  ;
		r[ 2] =  0.45560372783619284224958474598976  ;   s[ 2] = -0.85191465330460049130183564036667  ;   w[ 2] =  0.56607220700753210526405045945181  ;
		r[ 3] =  0.45560372783619284224958474598976  ;   s[ 3] =  0.85191465330460049130183564036667  ;   w[ 3] =  0.56607220700753210526405045945181  ;
		r[ 4] = -0.73162995157313452936803549184061  ;   s[ 4] = -0.63091278897675402624341320299366  ;   w[ 4] =  0.6427190017836766859447407493394   ;
		r[ 5] = -0.73162995157313452936803549184061  ;   s[ 5] =  0.63091278897675402624341320299366  ;   w[ 5] =  0.6427190017836766859447407493394   ;
		break;

//	case 5:
//		r.resize(7); s.resize(7); w.resize(7);
//		r[ 0] = -0.57735026918962576450914878050196  ;   s[ 0] = -0.77459666924148337703585307995648  ;   w[ 0] =  0.55555555555555555555555555555556  ;
//		r[ 1] =  0.57735026918962576450914878050196  ;   s[ 1] = -0.77459666924148337703585307995648  ;   w[ 1] =  0.55555555555555555555555555555556  ;
//		r[ 2] =  0.57735026918962576450914878050196  ;   s[ 2] =  0.77459666924148337703585307995648  ;   w[ 2] =  0.55555555555555555555555555555556  ;
//		r[ 3] = -0.57735026918962576450914878050196  ;   s[ 3] =  0.77459666924148337703585307995648  ;   w[ 3] =  0.55555555555555555555555555555556  ;
//		r[ 4] = -0.96609178307929590491457761047798  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.31746031746031746031746031746032  ;
//		r[ 5] =  0.96609178307929590491457761047798  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.31746031746031746031746031746032  ;
//		r[ 6] =  0.0                                 ;   s[ 6] =  0.0                                 ;   w[ 6] =  1.1428571428571428571428571428571   ;
//		break;

//	case 5:
//		r.resize(8); s.resize(8); w.resize(8);
//		r[ 0] = -0.88191710368819686350053858454642  ;   s[ 0] = -0.88191710368819686350053858454642  ;   w[ 0] =  0.18367346938775510204081632653061  ;
//		r[ 1] =  0.88191710368819686350053858454642  ;   s[ 1] = -0.88191710368819686350053858454642  ;   w[ 1] =  0.18367346938775510204081632653061  ;
//		r[ 2] =  0.88191710368819686350053858454642  ;   s[ 2] =  0.88191710368819686350053858454642  ;   w[ 2] =  0.18367346938775510204081632653061  ;
//		r[ 3] = -0.88191710368819686350053858454642  ;   s[ 3] =  0.88191710368819686350053858454642  ;   w[ 3] =  0.18367346938775510204081632653061  ;
//		r[ 4] = -0.68313005106397322554806924536807  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.81632653061224489795918367346939  ;
//		r[ 5] =  0.68313005106397322554806924536807  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.81632653061224489795918367346939  ;
//		r[ 6] =  0.0                                 ;   s[ 6] = -0.68313005106397322554806924536807  ;   w[ 6] =  0.81632653061224489795918367346939  ;
//		r[ 7] =  0.0                                 ;   s[ 7] =  0.68313005106397322554806924536807  ;   w[ 7] =  0.81632653061224489795918367346939  ;
//		break;

	case 5:
		r.resize(9); s.resize(9); w.resize(9);
		r[ 0] = -0.77459666924148337703585307995648  ;   s[ 0] = -0.77459666924148337703585307995648  ;   w[ 0] =  0.30864197530864197530864197530864  ;
		r[ 1] =  0.77459666924148337703585307995648  ;   s[ 1] = -0.77459666924148337703585307995648  ;   w[ 1] =  0.30864197530864197530864197530864  ;
		r[ 2] =  0.77459666924148337703585307995648  ;   s[ 2] =  0.77459666924148337703585307995648  ;   w[ 2] =  0.30864197530864197530864197530864  ;
		r[ 3] = -0.77459666924148337703585307995648  ;   s[ 3] =  0.77459666924148337703585307995648  ;   w[ 3] =  0.30864197530864197530864197530864  ;
		r[ 4] = -0.77459666924148337703585307995648  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.49382716049382716049382716049383  ;
		r[ 5] =  0.77459666924148337703585307995648  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.49382716049382716049382716049383  ;
		r[ 6] =  0.0                                 ;   s[ 6] = -0.77459666924148337703585307995648  ;   w[ 6] =  0.49382716049382716049382716049383  ;
		r[ 7] =  0.0                                 ;   s[ 7] =  0.77459666924148337703585307995648  ;   w[ 7] =  0.49382716049382716049382716049383  ;
		r[ 8] =  0.0                                 ;   s[ 8] =  0.0                                 ;   w[ 8] =  0.79012345679012345679012345679012  ;
		break;

	case 6:
		r.resize(10); s.resize(10); w.resize(10);
		r[ 0] =  0.86983337525005900854836957868001  ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.39275059096434794354409478683262  ;
		r[ 1] = -0.47940635161211124092413895950604  ;   s[ 1] =  0.0                                 ;   w[ 1] =  0.75476288124261053680935951125373  ;
		r[ 2] =  0.80283751620765670622348928992982  ;   s[ 2] = -0.86374282634615388866953558412824  ;   w[ 2] =  0.20616605058827902528397391045018  ;
		r[ 3] =  0.80283751620765670622348928992982  ;   s[ 3] =  0.86374282634615388866953558412824  ;   w[ 3] =  0.20616605058827902528397391045018  ;
		r[ 4] =  0.26214366550805818556917440336237  ;   s[ 4] = -0.51869052139258234357241383995409  ;   w[ 4] =  0.68999213848986375164488634708629  ;
		r[ 5] =  0.26214366550805818556917440336237  ;   s[ 5] =  0.51869052139258234357241383995409  ;   w[ 5] =  0.68999213848986375164488634708629  ;
		r[ 6] = -0.36309658314806653885831766232226  ;   s[ 6] = -0.93397254497284950682723415526076  ;   w[ 6] =  0.26051748873231697578121425572299  ;
		r[ 7] = -0.36309658314806653885831766232226  ;   s[ 7] =  0.93397254497284950682723415526076  ;   w[ 7] =  0.26051748873231697578121425572299  ;
		r[ 8] = -0.89660863276245265460591285379675  ;   s[ 8] = -0.60897753601635630215257669830604  ;   w[ 8] =  0.26956758608606100711319833769737  ;
		r[ 9] = -0.89660863276245265460591285379675  ;   s[ 9] =  0.60897753601635630215257669830604  ;   w[ 9] =  0.26956758608606100711319833769737  ;
		break;

	case 7:
		r.resize(12); s.resize(12); w.resize(12);
		r[ 0] =  0.925820099772551461566566776584    ;   s[ 0] = -0.925820099772551461566566776584    ;   w[ 0] =  0.925820099772551461566566776584    ;
		r[ 1] = -0.925820099772551461566566776584    ;   s[ 1] =  0.925820099772551461566566776584    ;   w[ 1] = -0.925820099772551461566566776584    ;
		r[ 2] =  0.0                                 ;   s[ 2] =  0.0                                 ;   w[ 2] =  0.0                                 ;
		r[ 3] =  0.0                                 ;   s[ 3] =  0.0                                 ;   w[ 3] =  0.0                                 ;
		r[ 4] =  0.38055443320831565637910635908639  ;   s[ 4] =  0.38055443320831565637910635908639  ;   w[ 4] = -0.38055443320831565637910635908639  ;
		r[ 5] = -0.38055443320831565637910635908639  ;   s[ 5] = -0.38055443320831565637910635908639  ;   w[ 5] =  0.38055443320831565637910635908639  ;
		r[ 6] = -0.38055443320831565637910635908639  ;   s[ 6] = -0.38055443320831565637910635908639  ;   w[ 6] =  0.38055443320831565637910635908639  ;
		r[ 7] =  0.38055443320831565637910635908639  ;   s[ 7] =  0.38055443320831565637910635908639  ;   w[ 7] = -0.38055443320831565637910635908639  ;
		r[ 8] =  0.80597978291859874370785618135074  ;   s[ 8] =  0.80597978291859874370785618135074  ;   w[ 8] =  0.80597978291859874370785618135074  ;
		r[ 9] = -0.80597978291859874370785618135074  ;   s[ 9] = -0.80597978291859874370785618135074  ;   w[ 9] = -0.80597978291859874370785618135074  ;
		r[10] = -0.80597978291859874370785618135074  ;   s[10] = -0.80597978291859874370785618135074  ;   w[10] = -0.80597978291859874370785618135074  ;
		r[11] =  0.80597978291859874370785618135074  ;   s[11] =  0.80597978291859874370785618135074  ;   w[11] =  0.80597978291859874370785618135074  ;
		break;

	case 8:
		r.resize(16); s.resize(16); w.resize(16);
		r[ 0] =  0.0                                 ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.055364705621439772246336010854973 ;
		r[ 1] =  0.0                                 ;   s[ 1] =  0.75762917766050544752486182186156  ;   w[ 1] =  0.40438936872607541333428973494895  ;
		r[ 2] =  0.0                                 ;   s[ 2] = -0.23687184225570189338644222172636  ;   w[ 2] =  0.53354660495263445535327684689234  ;
		r[ 3] =  0.0                                 ;   s[ 3] = -0.98971792904452668131489483514312  ;   w[ 3] =  0.11705418878673920642471837228175  ;
		r[ 4] = -0.63909130490036965340323526403172  ;   s[ 4] =  0.95052095564566688358766795634644  ;   w[ 4] =  0.1256144176137468041318570522381   ;
		r[ 5] =  0.63909130490036965340323526403172  ;   s[ 5] =  0.95052095564566688358766795634644  ;   w[ 5] =  0.1256144176137468041318570522381   ;
		r[ 6] = -0.93706907692499044375223108089477  ;   s[ 6] =  0.66388273688563317836212430624364  ;   w[ 6] =  0.13654458473358846733314799614166  ;
		r[ 7] =  0.93706907692499044375223108089477  ;   s[ 7] =  0.66388273688563317836212430624364  ;   w[ 7] =  0.13654458473358846733314799614166  ;
		r[ 8] = -0.53708353054149367789764810599272  ;   s[ 8] =  0.30421068172410450904224326756198  ;   w[ 8] =  0.48340847921125695111026552238112  ;
		r[ 9] =  0.53708353054149367789764810599272  ;   s[ 9] =  0.30421068172410450904224326756198  ;   w[ 9] =  0.48340847921125695111026552238112  ;
		r[10] = -0.88718850644962463901968824898949  ;   s[10] = -0.2364967185361194806572534629308   ;   w[10] =  0.25252850642954369338034098467654  ;
		r[11] =  0.88718850644962463901968824898949  ;   s[11] = -0.2364967185361194806572534629308   ;   w[11] =  0.25252850642954369338034098467654  ;
		r[12] = -0.49469882067019633202429566148486  ;   s[12] = -0.69895347608656355992463156993202  ;   w[12] =  0.36126232388217256912606760217776  ;
		r[13] =  0.49469882067019633202429566148487  ;   s[13] = -0.69895347608656355992463156993202  ;   w[13] =  0.36126232388217256912606760217776  ;
		r[14] = -0.89749581827976753753405583986329  ;   s[14] = -0.90039077421157973356347334412057  ;   w[14] =  0.085464254086247091239010359895814 ;
		r[15] =  0.89749581827976753753405583986329  ;   s[15] = -0.90039077421157973356347334412057  ;   w[15] =  0.085464254086247091239010359895814 ;
		break;

	case 9:
		r.resize(17); s.resize(17); w.resize(17);
		r[ 0] =  0.0                                 ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.52674897119341563786008230452675  ;
		r[ 1] =  0.076208328192617173181626867389324 ;   s[ 1] =  0.85261572933366230774521467651835  ;   w[ 1] =  0.26905133763978080301573389367099  ;
		r[ 2] = -0.076208328192617173181626867389325 ;   s[ 2] = -0.85261572933366230774521467651835  ;   w[ 2] =  0.26905133763978080301573389367099  ;
		r[ 3] = -0.85261572933366230774521467651835  ;   s[ 3] =  0.076208328192617173181626867389324 ;   w[ 3] =  0.26905133763978080301573389367099  ;
		r[ 4] =  0.85261572933366230774521467651835  ;   s[ 4] = -0.076208328192617173181626867389325 ;   w[ 4] =  0.26905133763978080301573389367099  ;
		r[ 5] =  0.52373582021442933603828712663914  ;   s[ 5] =  0.45333982113564719076278764158209  ;   w[ 5] =  0.39828243926207009527633571694979  ;
		r[ 6] = -0.52373582021442933603828712663914  ;   s[ 6] = -0.45333982113564719076278764158209  ;   w[ 6] =  0.39828243926207009527633571694979  ;
		r[ 7] = -0.45333982113564719076278764158209  ;   s[ 7] =  0.52373582021442933603828712663914  ;   w[ 7] =  0.39828243926207009527633571694979  ;
		r[ 8] =  0.45333982113564719076278764158209  ;   s[ 8] = -0.52373582021442933603828712663914  ;   w[ 8] =  0.39828243926207009527633571694979  ;
		r[ 9] =  0.75027709997890053353598398238936  ;   s[ 9] =  0.9279616459595696674007533693837   ;   w[ 9] =  0.11209960212959648527589892702544  ;
		r[10] = -0.75027709997890053353598398238936  ;   s[10] = -0.9279616459595696674007533693837   ;   w[10] =  0.11209960212959648527589892702544  ;
		r[11] = -0.9279616459595696674007533693837   ;   s[11] =  0.75027709997890053353598398238936  ;   w[11] =  0.11209960212959648527589892702544  ;
		r[12] =  0.9279616459595696674007533693837   ;   s[12] = -0.75027709997890053353598398238936  ;   w[12] =  0.11209960212959648527589892702544  ;
		r[13] =  0.96884996636197772071669034297833  ;   s[13] =  0.63068011973166885417324028074904  ;   w[13] =  0.088879378170198706967010886222082 ;
		r[14] = -0.96884996636197772071669034297833  ;   s[14] = -0.63068011973166885417324028074904  ;   w[14] =  0.088879378170198706967010886222082 ;
		r[15] = -0.63068011973166885417324028074904  ;   s[15] =  0.96884996636197772071669034297833  ;   w[15] =  0.088879378170198706967010886222082 ;
		r[16] =  0.63068011973166885417324028074904  ;   s[16] = -0.96884996636197772071669034297833  ;   w[16] =  0.088879378170198706967010886222082 ;
		break;

	case 10:
	case 11:
		r.resize(24); s.resize(24); w.resize(24);
		r[ 0] =  0.041658071912022368273546804537702 ;   s[ 0] =  0.42484724884866925061543011151196  ;   w[ 0] =  0.35115871839824543766039162580857  ;
		r[ 1] = -0.041658071912022368273546804537702 ;   s[ 1] = -0.42484724884866925061543011151196  ;   w[ 1] =  0.35115871839824543766039162580857  ;
		r[ 2] = -0.42484724884866925061543011151196  ;   s[ 2] =  0.041658071912022368273546804537702 ;   w[ 2] =  0.35115871839824543766039162580857  ;
		r[ 3] =  0.42484724884866925061543011151196  ;   s[ 3] = -0.041658071912022368273546804537702 ;   w[ 3] =  0.35115871839824543766039162580857  ;
		r[ 4] =  0.18858613871864195460032456818274  ;   s[ 4] =  0.95353952820153201584500426682398  ;   w[ 4] =  0.097386777358668164196120439799547 ;
		r[ 5] = -0.18858613871864195460032456818275  ;   s[ 5] = -0.95353952820153201584500426682398  ;   w[ 5] =  0.097386777358668164196120439799547 ;
		r[ 6] = -0.95353952820153201584500426682398  ;   s[ 6] =  0.18858613871864195460032456818274  ;   w[ 6] =  0.097386777358668164196120439799547 ;
		r[ 7] =  0.95353952820153201584500426682398  ;   s[ 7] = -0.18858613871864195460032456818275  ;   w[ 7] =  0.097386777358668164196120439799547 ;
		r[ 8] =  0.52532025036454776234163188714002  ;   s[ 8] =  0.71200191307533630654906589512376  ;   w[ 8] =  0.22562606172886338740315801620849  ;
		r[ 9] = -0.52532025036454776234163188714002  ;   s[ 9] = -0.71200191307533630654906589512376  ;   w[ 9] =  0.22562606172886338740315801620849  ;
		r[10] = -0.71200191307533630654906589512376  ;   s[10] =  0.52532025036454776234163188714002  ;   w[10] =  0.22562606172886338740315801620849  ;
		r[11] =  0.71200191307533630654906589512376  ;   s[11] = -0.52532025036454776234163188714002  ;   w[11] =  0.22562606172886338740315801620849  ;
		r[12] =  0.8125205483048131004893825819123   ;   s[12] =  0.3156234329152541959856097164021   ;   w[12] =  0.21173634999894860050393166135626  ;
		r[13] = -0.8125205483048131004893825819123   ;   s[13] = -0.3156234329152541959856097164021   ;   w[13] =  0.21173634999894860050393166135626  ;
		r[14] = -0.3156234329152541959856097164021   ;   s[14] =  0.8125205483048131004893825819123   ;   w[14] =  0.21173634999894860050393166135626  ;
		r[15] =  0.3156234329152541959856097164021   ;   s[15] = -0.8125205483048131004893825819123   ;   w[15] =  0.21173634999894860050393166135626  ;
		r[16] =  0.82577583590296393730227458528994  ;   s[16] =  0.9394863828167369072064323621699   ;   w[16] =  0.066071329164550595673635080849546 ;
		r[17] = -0.82577583590296393730227458528994  ;   s[17] = -0.9394863828167369072064323621699   ;   w[17] =  0.066071329164550595673635080849546 ;
		r[18] = -0.9394863828167369072064323621699   ;   s[18] =  0.82577583590296393730227458528994  ;   w[18] =  0.066071329164550595673635080849546 ;
		r[19] =  0.9394863828167369072064323621699   ;   s[19] = -0.82577583590296393730227458528994  ;   w[19] =  0.066071329164550595673635080849546 ;
		r[20] =  0.98263922354085547295249149700401  ;   s[20] =  0.69807610454956756477646980617496  ;   w[20] =  0.048020763350723814562763175977581 ;
		r[21] = -0.98263922354085547295249149700401  ;   s[21] = -0.69807610454956756477646980617496  ;   w[21] =  0.048020763350723814562763175977581 ;
		r[22] = -0.69807610454956756477646980617496  ;   s[22] =  0.98263922354085547295249149700401  ;   w[22] =  0.048020763350723814562763175977581 ;
		r[23] =  0.69807610454956756477646980617496  ;   s[23] = -0.98263922354085547295249149700401  ;   w[23] =  0.048020763350723814562763175977581 ;
		break;

	case 12:
	case 13:
		r.resize(33); s.resize(33); w.resize(33);
		r[ 0] =  0.0                                 ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.30038211543122536138599314413157  ;
		r[ 1] =  0.1381834598624653537472011803663   ;   s[ 1] =  0.95892517028753485753976133019922  ;   w[ 1] =  0.060424923817749980680865593194246 ;
		r[ 2] = -0.1381834598624653537472011803663   ;   s[ 2] = -0.95892517028753485753976133019922  ;   w[ 2] =  0.060424923817749980680865593194246 ;
		r[ 3] = -0.95892517028753485753976133019922  ;   s[ 3] =  0.1381834598624653537472011803663   ;   w[ 3] =  0.060424923817749980680865593194246 ;
		r[ 4] =  0.95892517028753485753976133019922  ;   s[ 4] = -0.1381834598624653537472011803663   ;   w[ 4] =  0.060424923817749980680865593194246 ;
		r[ 5] =  0.34271655604040678941312707343685  ;   s[ 5] =  0.4093045616940388433045521402569   ;   w[ 5] =  0.25687074948196783650847717582936  ;
		r[ 6] = -0.34271655604040678941312707343685  ;   s[ 6] = -0.4093045616940388433045521402569   ;   w[ 6] =  0.25687074948196783650847717582936  ;
		r[ 7] = -0.4093045616940388433045521402569   ;   s[ 7] =  0.34271655604040678941312707343685  ;   w[ 7] =  0.25687074948196783650847717582936  ;
		r[ 8] =  0.4093045616940388433045521402569   ;   s[ 8] = -0.34271655604040678941312707343685  ;   w[ 8] =  0.25687074948196783650847717582936  ;
		r[ 9] =  0.47580862521827590506759284340342  ;   s[ 9] =  0.8500766736997485759687655870011   ;   w[ 9] =  0.11884466730059560108179914617643  ;
		r[10] = -0.47580862521827590506759284340342  ;   s[10] = -0.8500766736997485759687655870011   ;   w[10] =  0.11884466730059560108179914617643  ;
		r[11] = -0.8500766736997485759687655870011   ;   s[11] =  0.47580862521827590506759284340342  ;   w[11] =  0.11884466730059560108179914617643  ;
		r[12] =  0.8500766736997485759687655870011   ;   s[12] = -0.47580862521827590506759284340342  ;   w[12] =  0.11884466730059560108179914617643  ;
		r[13] =  0.69625007849174941395899570503443  ;   s[13] =  0.070741508996444936217059351874191 ;   w[13] =  0.21334158145718938943300428418074  ;
		r[14] = -0.69625007849174941395899570503443  ;   s[14] = -0.070741508996444936217059351874191 ;   w[14] =  0.21334158145718938943300428418074  ;
		r[15] = -0.070741508996444936217059351874191 ;   s[15] =  0.69625007849174941395899570503443  ;   w[15] =  0.21334158145718938943300428418074  ;
		r[16] =  0.070741508996444936217059351874191 ;   s[16] = -0.69625007849174941395899570503443  ;   w[16] =  0.21334158145718938943300428418074  ;
		r[17] =  0.75580535657208143627128463446916  ;   s[17] =  0.64782163718701073204359302858785  ;   w[17] =  0.12976355037000271128554393061976  ;
		r[18] = -0.75580535657208143627128463446916  ;   s[18] = -0.64782163718701073204359302858785  ;   w[18] =  0.12976355037000271128554393061976  ;
		r[19] = -0.64782163718701073204359302858785  ;   s[19] =  0.75580535657208143627128463446916  ;   w[19] =  0.12976355037000271128554393061976  ;
		r[20] =  0.64782163718701073204359302858785  ;   s[20] = -0.75580535657208143627128463446916  ;   w[20] =  0.12976355037000271128554393061976  ;
		r[21] =  0.77880971155441942251895071620007  ;   s[21] =  0.98348668243987226378546406481069  ;   w[21] =  0.029991838864499131665613655657916 ;
		r[22] = -0.77880971155441942251895071620007  ;   s[22] = -0.98348668243987226378546406481069  ;   w[22] =  0.029991838864499131665613655657916 ;
		r[23] = -0.98348668243987226378546406481069  ;   s[23] =  0.77880971155441942251895071620007  ;   w[23] =  0.029991838864499131665613655657916 ;
		r[24] =  0.98348668243987226378546406481069  ;   s[24] = -0.77880971155441942251895071620007  ;   w[24] =  0.029991838864499131665613655657916 ;
		r[25] =  0.94132722587292523694920263357154  ;   s[25] =  0.3907362161294610006768680096856   ;   w[25] =  0.077492738533105339357827553359107 ;
		r[26] = -0.94132722587292523694920263357154  ;   s[26] = -0.3907362161294610006768680096856   ;   w[26] =  0.077492738533105339357827553359107 ;
		r[27] = -0.3907362161294610006768680096856   ;   s[27] =  0.94132722587292523694920263357154  ;   w[27] =  0.077492738533105339357827553359107 ;
		r[28] =  0.3907362161294610006768680096856   ;   s[28] = -0.94132722587292523694920263357154  ;   w[28] =  0.077492738533105339357827553359107 ;
		r[29] =  0.95729769978630736565628762477257  ;   s[29] =  0.85955600564163892858515856766437  ;   w[29] =  0.038174421317083669640370374949544 ;
		r[30] = -0.95729769978630736565628762477257  ;   s[30] = -0.85955600564163892858515856766437  ;   w[30] =  0.038174421317083669640370374949544 ;
		r[31] = -0.85955600564163892858515856766437  ;   s[31] =  0.95729769978630736565628762477257  ;   w[31] =  0.038174421317083669640370374949544 ;
		r[32] =  0.85955600564163892858515856766437  ;   s[32] = -0.95729769978630736565628762477257  ;   w[32] =  0.038174421317083669640370374949544 ;
		break;

//	case 14:
//	case 15:
//		r.resize(44); s.resize(44); w.resize(44);
//		r[ 0] = -1.3157979350697549053144175714858   ;   s[ 0] =  0.0                                 ;   w[ 0] = -0.0000040980941939292317380101393190284 ;
//		r[ 1] =  1.3157979350697549053144175714858   ;   s[ 1] =  0.0                                 ;   w[ 1] = -0.0000040980941939292317380101393190284 ;
//		r[ 2] =  0.0                                 ;   s[ 2] = -1.3157979350697549053144175714858   ;   w[ 2] = -0.0000040980941939292317380101393190284 ;
//		r[ 3] =  0.0                                 ;   s[ 3] =  1.3157979350697549053144175714858   ;   w[ 3] = -0.0000040980941939292317380101393190284 ;
//		r[ 4] = -0.97961583885785637433637020243015  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.041413464755838382880116469859433 ;
//		r[ 5] =  0.97961583885785637433637020243016  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.041413464755838382880116469859433 ;
//		r[ 6] =  0.0                                 ;   s[ 6] = -0.97961583885785637433637020243015  ;   w[ 6] =  0.041413464755838382880116469859433 ;
//		r[ 7] =  0.0                                 ;   s[ 7] =  0.97961583885785637433637020243016  ;   w[ 7] =  0.041413464755838382880116469859433 ;
//		r[ 8] = -0.63754568445005167595026317248518  ;   s[ 8] =  0.0                                 ;   w[ 8] =  0.18375837717504355291097497326319  ;
//		r[ 9] =  0.63754568445005167595026317248518  ;   s[ 9] =  0.0                                 ;   w[ 9] =  0.18375837717504355291097497326319  ;
//		r[10] =  0.0                                 ;   s[10] = -0.63754568445005167595026317248518  ;   w[10] =  0.18375837717504355291097497326319  ;
//		r[11] =  0.0                                 ;   s[11] =  0.63754568445005167595026317248518  ;   w[11] =  0.18375837717504355291097497326319  ;
//		r[12] = -0.93467992889366584854305617257161  ;   s[12] = -0.93467992889366584854305617257161  ;   w[12] =  0.028021786548627011347844662936611 ;
//		r[13] =  0.93467992889366584854305617257161  ;   s[13] = -0.93467992889366584854305617257161  ;   w[13] =  0.028021786548627011347844662936611 ;
//		r[14] =  0.93467992889366584854305617257161  ;   s[14] =  0.93467992889366584854305617257161  ;   w[14] =  0.028021786548627011347844662936611 ;
//		r[15] = -0.93467992889366584854305617257161  ;   s[15] =  0.93467992889366584854305617257161  ;   w[15] =  0.028021786548627011347844662936611 ;
//		r[16] = -0.7662665721615082471835143381837   ;   s[16] = -0.7662665721615082471835143381837   ;   w[16] =  0.094814697960164411764073427974786 ;
//		r[17] =  0.7662665721615082471835143381837   ;   s[17] = -0.7662665721615082471835143381837   ;   w[17] =  0.094814697960164411764073427974786 ;
//		r[18] =  0.7662665721615082471835143381837   ;   s[18] =  0.7662665721615082471835143381837   ;   w[18] =  0.094814697960164411764073427974786 ;
//		r[19] = -0.7662665721615082471835143381837   ;   s[19] =  0.7662665721615082471835143381837   ;   w[19] =  0.094814697960164411764073427974786 ;
//		r[20] = -0.51383624759178530981075565004205  ;   s[20] = -0.51383624759178530981075565004205  ;   w[20] =  0.16880540533376133189833699378019  ;
//		r[21] =  0.51383624759178530981075565004205  ;   s[21] = -0.51383624759178530981075565004205  ;   w[21] =  0.16880540533376133189833699378019  ;
//		r[22] =  0.51383624759178530981075565004205  ;   s[22] =  0.51383624759178530981075565004205  ;   w[22] =  0.16880540533376133189833699378019  ;
//		r[23] = -0.51383624759178530981075565004205  ;   s[23] =  0.51383624759178530981075565004205  ;   w[23] =  0.16880540533376133189833699378019  ;
//		r[24] = -0.22118958450550713884454934264686  ;   s[24] = -0.22118958450550713884454934264686  ;   w[24] =  0.18984740003676739197237469637752  ;
//		r[25] =  0.22118958450550713884454934264686  ;   s[25] = -0.22118958450550713884454934264686  ;   w[25] =  0.18984740003676739197237469637752  ;
//		r[26] =  0.22118958450550713884454934264686  ;   s[26] =  0.22118958450550713884454934264686  ;   w[26] =  0.18984740003676739197237469637752  ;
//		r[27] = -0.22118958450550713884454934264686  ;   s[27] =  0.22118958450550713884454934264686  ;   w[27] =  0.18984740003676739197237469637752  ;
//		r[28] = -0.97694956645518670808461563931969  ;   s[28] = -0.63759756393769257720680962898484  ;   w[28] =  0.033147747410412099125733232138572 ;
//		r[29] =  0.97694956645518670808461563931969  ;   s[29] = -0.63759756393769257720680962898484  ;   w[29] =  0.033147747410412099125733232138572 ;
//		r[30] =  0.97694956645518670808461563931969  ;   s[30] =  0.63759756393769257720680962898484  ;   w[30] =  0.033147747410412099125733232138572 ;
//		r[31] = -0.97694956645518670808461563931969  ;   s[31] =  0.63759756393769257720680962898484  ;   w[31] =  0.033147747410412099125733232138572 ;
//		r[32] = -0.63759756393769257720680962898484  ;   s[32] = -0.97694956645518670808461563931969  ;   w[32] =  0.033147747410412099125733232138572 ;
//		r[33] =  0.63759756393769257720680962898484  ;   s[33] = -0.97694956645518670808461563931969  ;   w[33] =  0.033147747410412099125733232138572 ;
//		r[34] =  0.63759756393769257720680962898484  ;   s[34] =  0.97694956645518670808461563931969  ;   w[34] =  0.033147747410412099125733232138572 ;
//		r[35] = -0.63759756393769257720680962898484  ;   s[35] =  0.97694956645518670808461563931969  ;   w[35] =  0.033147747410412099125733232138572 ;
//		r[36] = -0.86078037797219350364564801667769  ;   s[36] = -0.33686888747167766524281079848923  ;   w[36] =  0.11352373573158382410327516083522  ;
//		r[37] =  0.86078037797219350364564801667769  ;   s[37] = -0.33686888747167766524281079848923  ;   w[37] =  0.11352373573158382410327516083522  ;
//		r[38] =  0.86078037797219350364564801667769  ;   s[38] =  0.33686888747167766524281079848923  ;   w[38] =  0.11352373573158382410327516083522  ;
//		r[39] = -0.86078037797219350364564801667769  ;   s[39] =  0.33686888747167766524281079848923  ;   w[39] =  0.11352373573158382410327516083522  ;
//		r[40] = -0.33686888747167766524281079848923  ;   s[40] = -0.86078037797219350364564801667769  ;   w[40] =  0.11352373573158382410327516083522  ;
//		r[41] =  0.33686888747167766524281079848923  ;   s[41] = -0.86078037797219350364564801667769  ;   w[41] =  0.11352373573158382410327516083522  ;
//		r[42] =  0.33686888747167766524281079848923  ;   s[42] =  0.86078037797219350364564801667769  ;   w[42] =  0.11352373573158382410327516083522  ;
//		r[43] = -0.33686888747167766524281079848923  ;   s[43] =  0.86078037797219350364564801667769  ;   w[43] =  0.11352373573158382410327516083522  ;
		break;

	case 14:
	case 15:
		r.resize(48); s.resize(48); w.resize(48);
		r[ 0] = -0.9915377816777667                  ;   s[  0] =  0.0                                 ;   w[ 0] =  0.030124520798121                   ;
		r[ 1] =  0.9915377816777667                  ;   s[  1] =  0.0                                 ;   w[ 1] =  0.030124520798121                   ;
		r[ 2] =  0.0                                 ;   s[  2] = -0.9915377816777667                  ;   w[ 2] =  0.030124520798121                   ;
		r[ 3] =  0.0                                 ;   s[  3] =  0.9915377816777667                  ;   w[ 3] =  0.030124520798121                   ;
		r[ 4] = -0.802016387923044                   ;   s[  4] =  0.0                                 ;   w[ 4] =  0.0871146840209092                  ;
		r[ 5] =  0.802016387923044                   ;   s[  5] =  0.0                                 ;   w[ 5] =  0.0871146840209092                  ;
		r[ 6] =  0.0                                 ;   s[  6] = -0.802016387923044                   ;   w[ 6] =  0.0871146840209092                  ;
		r[ 7] =  0.0                                 ;   s[  7] =  0.802016387923044                   ;   w[ 7] =  0.0871146840209092                  ;
		r[ 8] = -0.5648674875232742                  ;   s[  8] =  0.0                                 ;   w[ 8] =  0.1250080294351494                  ;
		r[ 9] =  0.5648674875232742                  ;   s[  9] =  0.0                                 ;   w[ 9] =  0.1250080294351494                  ;
		r[10] =  0.0                                 ;   s[ 10] = -0.5648674875232742                  ;   w[10] =  0.1250080294351494                  ;
		r[11] =  0.0                                 ;   s[ 11] =  0.5648674875232742                  ;   w[11] =  0.1250080294351494                  ;
		r[12] = -0.9354392392539896                  ;   s[ 12] = -0.9354392392539896                  ;   w[12] =  0.0267651407861666                  ;
		r[13] =  0.9354392392539896                  ;   s[ 13] = -0.9354392392539896                  ;   w[13] =  0.0267651407861666                  ;
		r[14] =  0.9354392392539896                  ;   s[ 14] =  0.9354392392539896                  ;   w[14] =  0.0267651407861666                  ;
		r[15] = -0.9354392392539896                  ;   s[ 15] =  0.9354392392539896                  ;   w[15] =  0.0267651407861666                  ;
		r[16] = -0.7624563338825799                  ;   s[ 16] = -0.7624563338825799                  ;   w[16] =  0.0959651863624437                  ;
		r[17] =  0.7624563338825799                  ;   s[ 17] = -0.7624563338825799                  ;   w[17] =  0.0959651863624437                  ;
		r[18] =  0.7624563338825799                  ;   s[ 18] =  0.7624563338825799                  ;   w[18] =  0.0959651863624437                  ;
		r[19] = -0.7624563338825799                  ;   s[ 19] =  0.7624563338825799                  ;   w[19] =  0.0959651863624437                  ;
		r[20] = -0.2156164241427213                  ;   s[ 20] = -0.2156164241427213                  ;   w[20] =  0.1750832998343375                  ;
		r[21] =  0.2156164241427213                  ;   s[ 21] = -0.2156164241427213                  ;   w[21] =  0.1750832998343375                  ;
		r[22] =  0.2156164241427213                  ;   s[ 22] =  0.2156164241427213                  ;   w[22] =  0.1750832998343375                  ;
		r[23] = -0.2156164241427213                  ;   s[ 23] =  0.2156164241427213                  ;   w[23] =  0.1750832998343375                  ;
		r[24] = -0.9769662659711761                  ;   s[ 24] = -0.6684480048977932                  ;   w[24] =  0.0283136372033274                  ;
		r[25] =  0.9769662659711761                  ;   s[ 25] = -0.6684480048977932                  ;   w[25] =  0.0283136372033274                  ;
		r[26] =  0.9769662659711761                  ;   s[ 26] =  0.6684480048977932                  ;   w[26] =  0.0283136372033274                  ;
		r[27] = -0.9769662659711761                  ;   s[ 27] =  0.6684480048977932                  ;   w[27] =  0.0283136372033274                  ;
		r[28] = -0.6684480048977932                  ;   s[ 28] = -0.9769662659711761                  ;   w[28] =  0.0283136372033274                  ;
		r[29] =  0.6684480048977932                  ;   s[ 29] = -0.9769662659711761                  ;   w[29] =  0.0283136372033274                  ;
		r[30] =  0.6684480048977932                  ;   s[ 30] =  0.9769662659711761                  ;   w[30] =  0.0283136372033274                  ;
		r[31] = -0.6684480048977932                  ;   s[ 31] =  0.9769662659711761                  ;   w[31] =  0.0283136372033274                  ;
		r[32] = -0.8937128379503403                  ;   s[ 32] = -0.3735205277617582                  ;   w[32] =  0.0866414716025093                  ;
		r[33] =  0.8937128379503403                  ;   s[ 33] = -0.3735205277617582                  ;   w[33] =  0.0866414716025093                  ;
		r[34] =  0.8937128379503403                  ;   s[ 34] =  0.3735205277617582                  ;   w[34] =  0.0866414716025093                  ;
		r[35] = -0.8937128379503403                  ;   s[ 35] =  0.3735205277617582                  ;   w[35] =  0.0866414716025093                  ;
		r[36] = -0.3735205277617582                  ;   s[ 36] = -0.8937128379503403                  ;   w[36] =  0.0866414716025093                  ;
		r[37] =  0.3735205277617582                  ;   s[ 37] = -0.8937128379503403                  ;   w[37] =  0.0866414716025093                  ;
		r[38] =  0.3735205277617582                  ;   s[ 38] =  0.8937128379503403                  ;   w[38] =  0.0866414716025093                  ;
		r[39] = -0.3735205277617582                  ;   s[ 39] =  0.8937128379503403                  ;   w[39] =  0.0866414716025093                  ;
		r[40] = -0.6122485619312083                  ;   s[ 40] = -0.4078983303613935                  ;   w[40] =  0.1150144605755996                  ;
		r[41] =  0.6122485619312083                  ;   s[ 41] = -0.4078983303613935                  ;   w[41] =  0.1150144605755996                  ;
		r[42] =  0.6122485619312083                  ;   s[ 42] =  0.4078983303613935                  ;   w[42] =  0.1150144605755996                  ;
		r[43] = -0.6122485619312083                  ;   s[ 43] =  0.4078983303613935                  ;   w[43] =  0.1150144605755996                  ;
		r[44] = -0.4078983303613935                  ;   s[ 44] = -0.6122485619312083                  ;   w[44] =  0.1150144605755996                  ;
		r[45] =  0.4078983303613935                  ;   s[ 45] = -0.6122485619312083                  ;   w[45] =  0.1150144605755996                  ;
		r[46] =  0.4078983303613935                  ;   s[ 46] =  0.6122485619312083                  ;   w[46] =  0.1150144605755996                  ;
		r[47] = -0.4078983303613935                  ;   s[ 47] =  0.6122485619312083                  ;   w[47] =  0.1150144605755996                  ;
		break;

	case 16:
	case 17:
		r.resize(60); s.resize(60); w.resize(60);
		r[ 0] = -0.98935307451260049122643583761685  ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.020614915919990959884934611135259 ;
		r[ 1] =  0.98935307451260049122643583761685  ;   s[ 1] =  0.0                                 ;   w[ 1] =  0.020614915919990959884934611135259 ;
		r[ 2] =  0.0                                 ;   s[ 2] = -0.98935307451260049122643583761685  ;   w[ 2] =  0.020614915919990959884934611135259 ;
		r[ 3] =  0.0                                 ;   s[ 3] =  0.98935307451260049122643583761685  ;   w[ 3] =  0.020614915919990959884934611135259 ;
		r[ 4] = -0.37628520715797329440754861172025  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.12802571617990983471879057826677  ;
		r[ 5] =  0.37628520715797329440754861172025  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.12802571617990983471879057826677  ;
		r[ 6] =  0.0                                 ;   s[ 6] = -0.37628520715797329440754861172025  ;   w[ 6] =  0.12802571617990983471879057826677  ;
		r[ 7] =  0.0                                 ;   s[ 7] =  0.37628520715797329440754861172025  ;   w[ 7] =  0.12802571617990983471879057826677  ;
		r[ 8] = -0.9788482792622331160700714359939   ;   s[ 8] = -0.9788482792622331160700714359939   ;   w[ 8] =  0.0055117395340318905201546771939339;
		r[ 9] =  0.9788482792622331160700714359939   ;   s[ 9] = -0.9788482792622331160700714359939   ;   w[ 9] =  0.0055117395340318905201546771939339;
		r[10] =  0.9788482792622331160700714359939   ;   s[10] =  0.9788482792622331160700714359939   ;   w[10] =  0.0055117395340318905201546771939339;
		r[11] = -0.9788482792622331160700714359939   ;   s[11] =  0.9788482792622331160700714359939   ;   w[11] =  0.0055117395340318905201546771939339;
		r[12] = -0.885794729164116128906454358065    ;   s[12] = -0.885794729164116128906454358065    ;   w[12] =  0.039207712457141880495599845060041 ;
		r[13] =  0.885794729164116128906454358065    ;   s[13] = -0.885794729164116128906454358065    ;   w[13] =  0.039207712457141880495599845060041 ;
		r[14] =  0.885794729164116128906454358065    ;   s[14] =  0.885794729164116128906454358065    ;   w[14] =  0.039207712457141880495599845060041 ;
		r[15] = -0.885794729164116128906454358065    ;   s[15] =  0.885794729164116128906454358065    ;   w[15] =  0.039207712457141880495599845060041 ;
		r[16] = -0.17175612383834817469438389149358  ;   s[16] = -0.17175612383834817469438389149358  ;   w[16] =  0.076396945079863302400504854301706 ;
		r[17] =  0.17175612383834817469438389149359  ;   s[17] = -0.17175612383834817469438389149358  ;   w[17] =  0.076396945079863302400504854301706 ;
		r[18] =  0.17175612383834817469438389149359  ;   s[18] =  0.17175612383834817469438389149359  ;   w[18] =  0.076396945079863302400504854301706 ;
		r[19] = -0.17175612383834817469438389149358  ;   s[19] =  0.17175612383834817469438389149359  ;   w[19] =  0.076396945079863302400504854301706 ;
		r[20] = -0.59049927380600241335151652100802  ;   s[20] = -0.31950503663457394567678947430327  ;   w[20] =  0.14151372994997245924460974941257  ;
		r[21] =  0.59049927380600241335151652100802  ;   s[21] = -0.31950503663457394567678947430327  ;   w[21] =  0.14151372994997245924460974941257  ;
		r[22] =  0.59049927380600241335151652100802  ;   s[22] =  0.31950503663457394567678947430327  ;   w[22] =  0.14151372994997245924460974941257  ;
		r[23] = -0.59049927380600241335151652100802  ;   s[23] =  0.31950503663457394567678947430327  ;   w[23] =  0.14151372994997245924460974941257  ;
		r[24] = -0.31950503663457394567678947430327  ;   s[24] = -0.59049927380600241335151652100802  ;   w[24] =  0.14151372994997245924460974941257  ;
		r[25] =  0.31950503663457394567678947430327  ;   s[25] = -0.59049927380600241335151652100802  ;   w[25] =  0.14151372994997245924460974941257  ;
		r[26] =  0.31950503663457394567678947430327  ;   s[26] =  0.59049927380600241335151652100802  ;   w[26] =  0.14151372994997245924460974941257  ;
		r[27] = -0.31950503663457394567678947430327  ;   s[27] =  0.59049927380600241335151652100802  ;   w[27] =  0.14151372994997245924460974941257  ;
		r[28] = -0.79907913191686325581013333456715  ;   s[28] = -0.59797245192945738026280175599674  ;   w[28] =  0.08390327936379760208232766619203  ;
		r[29] =  0.79907913191686325581013333456715  ;   s[29] = -0.59797245192945738026280175599674  ;   w[29] =  0.08390327936379760208232766619203  ;
		r[30] =  0.79907913191686325581013333456715  ;   s[30] =  0.59797245192945738026280175599675  ;   w[30] =  0.08390327936379760208232766619203  ;
		r[31] = -0.79907913191686325581013333456715  ;   s[31] =  0.59797245192945738026280175599675  ;   w[31] =  0.08390327936379760208232766619203  ;
		r[32] = -0.59797245192945738026280175599674  ;   s[32] = -0.79907913191686325581013333456715  ;   w[32] =  0.08390327936379760208232766619203  ;
		r[33] =  0.59797245192945738026280175599675  ;   s[33] = -0.79907913191686325581013333456715  ;   w[33] =  0.08390327936379760208232766619203  ;
		r[34] =  0.59797245192945738026280175599675  ;   s[34] =  0.79907913191686325581013333456715  ;   w[34] =  0.08390327936379760208232766619203  ;
		r[35] = -0.59797245192945738026280175599674  ;   s[35] =  0.79907913191686325581013333456715  ;   w[35] =  0.08390327936379760208232766619203  ;
		r[36] = -0.80374396295874471178544982549437  ;   s[36] = -0.058344481776550529684353156329201 ;   w[36] =  0.060394163649684546030903589091743 ;
		r[37] =  0.80374396295874471178544982549437  ;   s[37] = -0.058344481776550529684353156329201 ;   w[37] =  0.060394163649684546030903589091743 ;
		r[38] =  0.80374396295874471178544982549437  ;   s[38] =  0.058344481776550529684353156329201 ;   w[38] =  0.060394163649684546030903589091743 ;
		r[39] = -0.80374396295874471178544982549437  ;   s[39] =  0.058344481776550529684353156329201 ;   w[39] =  0.060394163649684546030903589091743 ;
		r[40] = -0.058344481776550529684353156329201 ;   s[40] = -0.80374396295874471178544982549437  ;   w[40] =  0.060394163649684546030903589091743 ;
		r[41] =  0.058344481776550529684353156329201 ;   s[41] = -0.80374396295874471178544982549437  ;   w[41] =  0.060394163649684546030903589091743 ;
		r[42] =  0.058344481776550529684353156329201 ;   s[42] =  0.80374396295874471178544982549437  ;   w[42] =  0.060394163649684546030903589091743 ;
		r[43] = -0.058344481776550529684353156329201 ;   s[43] =  0.80374396295874471178544982549437  ;   w[43] =  0.060394163649684546030903589091743 ;
		r[44] = -0.93650627612749478174208834817163  ;   s[44] = -0.34738631616620267478599779170134  ;   w[44] =  0.057387752969212695121415829833749 ;
		r[45] =  0.93650627612749478174208834817163  ;   s[45] = -0.34738631616620267478599779170134  ;   w[45] =  0.057387752969212695121415829833749 ;
		r[46] =  0.93650627612749478174208834817163  ;   s[46] =  0.34738631616620267478599779170134  ;   w[46] =  0.057387752969212695121415829833749 ;
		r[47] = -0.93650627612749478174208834817163  ;   s[47] =  0.34738631616620267478599779170134  ;   w[47] =  0.057387752969212695121415829833749 ;
		r[48] = -0.34738631616620267478599779170134  ;   s[48] = -0.93650627612749478174208834817163  ;   w[48] =  0.057387752969212695121415829833749 ;
		r[49] =  0.34738631616620267478599779170134  ;   s[49] = -0.93650627612749478174208834817163  ;   w[49] =  0.057387752969212695121415829833749 ;
		r[50] =  0.34738631616620267478599779170134  ;   s[50] =  0.93650627612749478174208834817163  ;   w[50] =  0.057387752969212695121415829833749 ;
		r[51] = -0.34738631616620267478599779170134  ;   s[51] =  0.93650627612749478174208834817163  ;   w[51] =  0.057387752969212695121415829833749 ;
		r[52] = -0.98132117980545229497591044043071  ;   s[52] = -0.70600028779864611918192622062316  ;   w[52] =  0.021922559481863763510750882491049 ;
		r[53] =  0.98132117980545229497591044043071  ;   s[53] = -0.70600028779864611918192622062316  ;   w[53] =  0.021922559481863763510750882491049 ;
		r[54] =  0.98132117980545229497591044043071  ;   s[54] =  0.70600028779864611918192622062316  ;   w[54] =  0.021922559481863763510750882491049 ;
		r[55] = -0.98132117980545229497591044043071  ;   s[55] =  0.70600028779864611918192622062316  ;   w[55] =  0.021922559481863763510750882491049 ;
		r[56] = -0.70600028779864611918192622062316  ;   s[56] = -0.98132117980545229497591044043071  ;   w[56] =  0.021922559481863763510750882491049 ;
		r[57] =  0.70600028779864611918192622062316  ;   s[57] = -0.98132117980545229497591044043071  ;   w[57] =  0.021922559481863763510750882491049 ;
		r[58] =  0.70600028779864611918192622062316  ;   s[58] =  0.98132117980545229497591044043071  ;   w[58] =  0.021922559481863763510750882491049 ;
		r[59] = -0.70600028779864611918192622062316  ;   s[59] =  0.98132117980545229497591044043071  ;   w[59] =  0.021922559481863763510750882491049 ;
		break;

	case 18:
	case 19:
		r.resize(72); s.resize(72); w.resize(72);
		r[ 0] = -0.94396283180823935456575800864943  ;   s[ 0] =  0.0                                 ;   w[ 0] =  0.038205406871462043034860905333146 ;
		r[ 1] =  0.94396283180823935456575800864943  ;   s[ 1] =  0.0                                 ;   w[ 1] =  0.038205406871462043034860905333146 ;
		r[ 2] =  0.0                                 ;   s[ 2] = -0.94396283180823935456575800864943  ;   w[ 2] =  0.038205406871462043034860905333146 ;
		r[ 3] =  0.0                                 ;   s[ 3] =  0.94396283180823935456575800864943  ;   w[ 3] =  0.038205406871462043034860905333146 ;
		r[ 4] = -0.53691843437601345440534541955494  ;   s[ 4] =  0.0                                 ;   w[ 4] =  0.13536850297652130720136300681475  ;
		r[ 5] =  0.53691843437601345440534541955494  ;   s[ 5] =  0.0                                 ;   w[ 5] =  0.13536850297652130720136300681475  ;
		r[ 6] =  0.0                                 ;   s[ 6] = -0.53691843437601345440534541955494  ;   w[ 6] =  0.13536850297652130720136300681475  ;
		r[ 7] =  0.0                                 ;   s[ 7] =  0.53691843437601345440534541955494  ;   w[ 7] =  0.13536850297652130720136300681475  ;
		r[ 8] = -0.97398107639416970607197901491195  ;   s[ 8] = -0.97398107639416970607197901491195  ;   w[ 8] =  0.0057737085586641125056797246494225;
		r[ 9] =  0.97398107639416970607197901491195  ;   s[ 9] = -0.97398107639416970607197901491195  ;   w[ 9] =  0.0057737085586641125056797246494225;
		r[10] =  0.97398107639416970607197901491195  ;   s[10] =  0.97398107639416970607197901491195  ;   w[10] =  0.0057737085586641125056797246494225;
		r[11] = -0.97398107639416970607197901491195  ;   s[11] =  0.97398107639416970607197901491195  ;   w[11] =  0.0057737085586641125056797246494225;
		r[12] = -0.74299553532760945045373425250583  ;   s[12] = -0.74299553532760945045373425250583  ;   w[12] =  0.067460759759473078030919733506417 ;
		r[13] =  0.74299553532760945045373425250583  ;   s[13] = -0.74299553532760945045373425250583  ;   w[13] =  0.067460759759473078030919733506417 ;
		r[14] =  0.74299553532760945045373425250583  ;   s[14] =  0.74299553532760945045373425250583  ;   w[14] =  0.067460759759473078030919733506417 ;
		r[15] = -0.74299553532760945045373425250583  ;   s[15] =  0.74299553532760945045373425250583  ;   w[15] =  0.067460759759473078030919733506417 ;
		r[16] = -0.28501005218891649997146272584315  ;   s[16] = -0.28501005218891649997146272584315  ;   w[16] =  0.14089911522789236838765914357523  ;
		r[17] =  0.28501005218891649997146272584316  ;   s[17] = -0.28501005218891649997146272584315  ;   w[17] =  0.14089911522789236838765914357523  ;
		r[18] =  0.28501005218891649997146272584316  ;   s[18] =  0.28501005218891649997146272584316  ;   w[18] =  0.14089911522789236838765914357523  ;
		r[19] = -0.28501005218891649997146272584315  ;   s[19] =  0.28501005218891649997146272584316  ;   w[19] =  0.14089911522789236838765914357523  ;
		r[20] = -0.068354569272490744039894488776537 ;   s[20] = -0.068354569272490744039894488776537 ;   w[20] =  0.04746662768566240465916685298833  ;
		r[21] =  0.068354569272490744039894488776537 ;   s[21] = -0.068354569272490744039894488776537 ;   w[21] =  0.04746662768566240465916685298833  ;
		r[22] =  0.068354569272490744039894488776537 ;   s[22] =  0.068354569272490744039894488776537 ;   w[22] =  0.04746662768566240465916685298833  ;
		r[23] = -0.068354569272490744039894488776537 ;   s[23] =  0.068354569272490744039894488776537 ;   w[23] =  0.04746662768566240465916685298833  ;
		r[24] = -0.80295200439854298054381978132977  ;   s[24] = -0.20334553416333215130266962050815  ;   w[24] =  0.078619467342982495594078841653827 ;
		r[25] =  0.80295200439854298054381978132977  ;   s[25] = -0.20334553416333215130266962050815  ;   w[25] =  0.078619467342982495594078841653827 ;
		r[26] =  0.80295200439854298054381978132977  ;   s[26] =  0.20334553416333215130266962050815  ;   w[26] =  0.078619467342982495594078841653827 ;
		r[27] = -0.80295200439854298054381978132977  ;   s[27] =  0.20334553416333215130266962050815  ;   w[27] =  0.078619467342982495594078841653827 ;
		r[28] = -0.20334553416333215130266962050815  ;   s[28] = -0.80295200439854298054381978132977  ;   w[28] =  0.078619467342982495594078841653827 ;
		r[29] =  0.20334553416333215130266962050815  ;   s[29] = -0.80295200439854298054381978132977  ;   w[29] =  0.078619467342982495594078841653827 ;
		r[30] =  0.20334553416333215130266962050815  ;   s[30] =  0.80295200439854298054381978132977  ;   w[30] =  0.078619467342982495594078841653827 ;
		r[31] = -0.20334553416333215130266962050815  ;   s[31] =  0.80295200439854298054381978132977  ;   w[31] =  0.078619467342982495594078841653827 ;
		r[32] = -0.63424467280788162837548386250045  ;   s[32] = -0.42657217299287659029261959410182  ;   w[32] =  0.094979169511394218675354871332317 ;
		r[33] =  0.63424467280788162837548386250045  ;   s[33] = -0.42657217299287659029261959410182  ;   w[33] =  0.094979169511394218675354871332317 ;
		r[34] =  0.63424467280788162837548386250045  ;   s[34] =  0.42657217299287659029261959410182  ;   w[34] =  0.094979169511394218675354871332317 ;
		r[35] = -0.63424467280788162837548386250045  ;   s[35] =  0.42657217299287659029261959410182  ;   w[35] =  0.094979169511394218675354871332317 ;
		r[36] = -0.42657217299287659029261959410182  ;   s[36] = -0.63424467280788162837548386250045  ;   w[36] =  0.094979169511394218675354871332317 ;
		r[37] =  0.42657217299287659029261959410182  ;   s[37] = -0.63424467280788162837548386250045  ;   w[37] =  0.094979169511394218675354871332317 ;
		r[38] =  0.42657217299287659029261959410182  ;   s[38] =  0.63424467280788162837548386250045  ;   w[38] =  0.094979169511394218675354871332317 ;
		r[39] = -0.42657217299287659029261959410182  ;   s[39] =  0.63424467280788162837548386250045  ;   w[39] =  0.094979169511394218675354871332317 ;
		r[40] = -0.97835070690822741691512944188234  ;   s[40] = -0.29583077662099486352221475178363  ;   w[40] =  0.022331162356015117782316324469056 ;
		r[41] =  0.97835070690822741691512944188234  ;   s[41] = -0.29583077662099486352221475178363  ;   w[41] =  0.022331162356015117782316324469056 ;
		r[42] =  0.97835070690822741691512944188234  ;   s[42] =  0.29583077662099486352221475178363  ;   w[42] =  0.022331162356015117782316324469056 ;
		r[43] = -0.97835070690822741691512944188234  ;   s[43] =  0.29583077662099486352221475178363  ;   w[43] =  0.022331162356015117782316324469056 ;
		r[44] = -0.29583077662099486352221475178363  ;   s[44] = -0.97835070690822741691512944188234  ;   w[44] =  0.022331162356015117782316324469056 ;
		r[45] =  0.29583077662099486352221475178363  ;   s[45] = -0.97835070690822741691512944188234  ;   w[45] =  0.022331162356015117782316324469056 ;
		r[46] =  0.29583077662099486352221475178363  ;   s[46] =  0.97835070690822741691512944188234  ;   w[46] =  0.022331162356015117782316324469056 ;
		r[47] = -0.29583077662099486352221475178363  ;   s[47] =  0.97835070690822741691512944188234  ;   w[47] =  0.022331162356015117782316324469056 ;
		r[48] = -0.9016727144103894325909328577805   ;   s[48] = -0.54198303732787083917182213643965  ;   w[48] =  0.055594877793784962824455900784647 ;
		r[49] =  0.9016727144103894325909328577805   ;   s[49] = -0.54198303732787083917182213643965  ;   w[49] =  0.055594877793784962824455900784647 ;
		r[50] =  0.9016727144103894325909328577805   ;   s[50] =  0.54198303732787083917182213643965  ;   w[50] =  0.055594877793784962824455900784647 ;
		r[51] = -0.9016727144103894325909328577805   ;   s[51] =  0.54198303732787083917182213643965  ;   w[51] =  0.055594877793784962824455900784647 ;
		r[52] = -0.54198303732787083917182213643965  ;   s[52] = -0.9016727144103894325909328577805   ;   w[52] =  0.055594877793784962824455900784647 ;
		r[53] =  0.54198303732787083917182213643965  ;   s[53] = -0.9016727144103894325909328577805   ;   w[53] =  0.055594877793784962824455900784647 ;
		r[54] =  0.54198303732787083917182213643965  ;   s[54] =  0.9016727144103894325909328577805   ;   w[54] =  0.055594877793784962824455900784647 ;
		r[55] = -0.54198303732787083917182213643965  ;   s[55] =  0.9016727144103894325909328577805   ;   w[55] =  0.055594877793784962824455900784647 ;
		r[56] = -1.0070184493831158384230746681625   ;   s[56] = -0.66941479878393649275486348677309  ;   w[56] =  0.006049054506376195381204400477717 ;
		r[57] =  1.0070184493831158384230746681625   ;   s[57] = -0.66941479878393649275486348677309  ;   w[57] =  0.006049054506376195381204400477717 ;
		r[58] =  1.0070184493831158384230746681625   ;   s[58] =  0.66941479878393649275486348677309  ;   w[58] =  0.006049054506376195381204400477717 ;
		r[59] = -1.0070184493831158384230746681625   ;   s[59] =  0.66941479878393649275486348677309  ;   w[59] =  0.006049054506376195381204400477717 ;
		r[60] = -0.66941479878393649275486348677309  ;   s[60] = -1.0070184493831158384230746681625   ;   w[60] =  0.006049054506376195381204400477717 ;
		r[61] =  0.66941479878393649275486348677309  ;   s[61] = -1.0070184493831158384230746681625   ;   w[61] =  0.006049054506376195381204400477717 ;
		r[62] =  0.66941479878393649275486348677309  ;   s[62] =  1.0070184493831158384230746681625   ;   w[62] =  0.006049054506376195381204400477717 ;
		r[63] = -0.66941479878393649275486348677309  ;   s[63] =  1.0070184493831158384230746681625   ;   w[63] =  0.006049054506376195381204400477717 ;
		r[64] = -0.94516145357347125579624470955021  ;   s[64] = -0.82950142147782421918670686038241  ;   w[64] =  0.024839207949609352832764977848791 ;
		r[65] =  0.94516145357347125579624470955021  ;   s[65] = -0.82950142147782421918670686038241  ;   w[65] =  0.024839207949609352832764977848791 ;
		r[66] =  0.94516145357347125579624470955021  ;   s[66] =  0.82950142147782421918670686038241  ;   w[66] =  0.024839207949609352832764977848791 ;
		r[67] = -0.94516145357347125579624470955021  ;   s[67] =  0.82950142147782421918670686038241  ;   w[67] =  0.024839207949609352832764977848791 ;
		r[68] = -0.82950142147782421918670686038241  ;   s[68] = -0.94516145357347125579624470955021  ;   w[68] =  0.024839207949609352832764977848791 ;
		r[69] =  0.82950142147782421918670686038241  ;   s[69] = -0.94516145357347125579624470955021  ;   w[69] =  0.024839207949609352832764977848791 ;
		r[70] =  0.82950142147782421918670686038241  ;   s[70] =  0.94516145357347125579624470955021  ;   w[70] =  0.024839207949609352832764977848791 ;
		r[71] = -0.82950142147782421918670686038241  ;   s[71] =  0.94516145357347125579624470955021  ;   w[71] =  0.024839207949609352832764977848791 ;
	default: return false;
	}
	return true;
}

int Square::maxorder()
{
	return 19;
}
